<?php

namespace app\common\shop;

use app\common\entity\Config;
use app\index\controller\Shoporder;
use think\Db;
use think\Model;
use traits\model\SoftDelete;

/*拼团不参与游戏*/
class ShopGroupModel extends model {
    //use SoftDelete;//开启了软删除
    //protected  = 'del_time';
    // 完整数据表名
    protected $table = 'shop_group';


    /**
     * [建表]
     * @return
     */
    public static function createTable(){
        return Db::query("CREATE TABLE If Not Exists `shop_group` (
             `id` int(11) NOT NULL AUTO_INCREMENT,
             `uid` int(11) NOT NULL COMMENT '会员id',
             `goodsid` int(11) NOT NULL COMMENT '商品id',
             `number` int(11) NOT NULL DEFAULT '0' COMMENT '需要成团的人数',
             `havenumber` int(11) NOT NULL DEFAULT '0' COMMENT '已经有的人数',
             `status` int(11)  NOT NULL DEFAULT '0' COMMENT '状态 -1未付款 0未成团 1已成团',
             `createtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
             `finishtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '成团时间',
             `overtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '结束时间',
             PRIMARY KEY (`id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='团购记录表'");
    }

    /**
     * [添加]
     * @return
     */
    public static function add($data){
        $data['createtime'] = time();
        return self::insertGetId($data);
    }

    /**
     * [拼团结束时间]
     * @param
     * @return
     */
    public static function getOvertime(){
        return time()+( Config::getValue('shop_group_time')*60);
    }

    /**
     * [付款]
     * @param
     * @return
     */
    public static function pay($orderid){
        $order = OrderModel::getInfo($orderid);
        if($order['shoptype'] != 3) return true;
        self::addNumber($order['groupid']);
        self::where('id',$order['groupid'])->update(['status'=>0,'overtime'=>self::getOvertime()]);
        self::checkOver($order['groupid']);//是否完成拼团

        return true;
    }
    /**
     * [拼团信息]
     * @param
     * @return
     */
    public static function getInfo($id){
        return self::where('id',$id)->find();
    }
    /**
     * [是否完成拼团]
     * @param
     * @return
     */
    public static function checkOver( $id ){
        $info = self::getInfo($id);
        // 当人数足够或者拼团时间结束都能拼团成功
        if($info['number'] == $info['havenumber'] || $info['overtime'] <= time()){
            self::over($id);// 完成拼团
            return true;
        }
        return false;
    }


    /**
     * [完成拼团]
     * @param
     * @return
     */
    public static function over($id){
        OrderModel::where('groupid',$id)->setField('groupstatus',1);// 完成拼团
        return self::where('id',$id)->update(['status'=>1,'finishtime'=>time()]);
    }

    /**
     * [增加拼团人数]
     * @param
     * @return
     */
    public static function addNumber($id,$number=1){
        return self::where('id',$id)->setInc('havenumber',$number);
    }

}
